#define _CRT_SECURE_NO_WARNINGS 1


//#include<vector>
//#include<iostream>
//
//using namespace std;
//
//int Min(int a, int b)
//{
//    if (a < b)
//    {
//        return a;
//    }
//    else
//    {
//        return b;
//    }
//}
//
//int main()
//{
//    int n = 0;
//    cin >> n;
//    vector<int> v(3);
//    v[0] = 0;
//    v[1] = v[2] = 1;
//    int end = 2;
//    while (v[end] < n)
//    {
//        v.push_back(v[end - 1] + v[end]);
//        end++;
//    }
//    int size = v.size();
//    cout << Min(v[size - 1] - n, n - v[size - 2]) << endl;
//
//    return 0;
//}


#include<vector>
#include<iostream>

using namespace std;

int main()
{
    int n = 0;
    cin >> n;
    vector<vector<int>> vv(n);
    for (int i = 0; i < n; i++)
    {
        vv[i].resize(i + 1, 1);
    }
    for (int i = 2; i < vv.size(); i++)
    {
        for (int j = 1; j < vv[i].size() - 1; j++)
        {
            vv[i][j] = vv[i - 1][j - 1] + vv[i - 1][j];
        }
    }
    for (int i = 0; i < vv.size(); i++)
    {
        for (int j = 0; j < vv[i].size(); j++)
        {
            printf("%5d ", vv[i][j]);
        }
        cout << endl;
    }

    return 0;
}